#include<bits/stdc++.h>
#define int long long
#define N 100005
using namespace std;
int n,m,q;
int tot,head[N],nxt[N<<1],to[N<<1];
int X[N],Y[N],P[N];
int c[N],d[N];
int w[N];
int sum[N];
bool vis[N];
inline void add(int u,int v){
    nxt[++tot]=head[u];
    to[tot]=v;
    head[u]=tot;
}
signed main(){
    freopen("shu.in","r",stdin);
    freopen("shu.out","w",stdout);
    scanf("%lld %lld %lld",&n,&m,&q);
    for(int i=1,u,v;i<n;i++){
        scanf("%lld %lld",&u,&v);
        add(u,v);
        add(v,u);
    }
    for(int i=1;i<=q;i++) scanf("%lld %lld %lld",&X[i],&Y[i],&P[i]);
    for(int i=1;i<=m;i++) scanf("%lld %lld",&c[i],&d[i]);
    for(int i=1;i<=m;i++) if(c[i]-1<=d[i]) vis[c[i]]=1,w[c[i]]=d[i];
    vis[1]=1;
    for(int j=1;j<=10;j++){
        for(int i=1;i<=n;i++) sum[i]=sum[i-1]+vis[i];
        for(int i=1;i<=m;i++) if(sum[min(i+w[i],n)]-sum[max(1ll,i-w[i])-1]) vis[i]=1;
    }
    for(int i=1;i<=n;i++) sum[i]=sum[i-1]+vis[i];
    for(int i=1;i<=q;i++){
        if(sum[min(X[i]+P[i],n)]-sum[max(1ll,X[i]-P[i])-1]) printf("YES\n");
        else printf("NO\n");
    }
    return 0;
}